package com.lashou.chunshen.lashoutuangou.tools;

import android.app.Activity;
import android.app.ActivityManager;
import android.content.Context;

import java.util.ArrayList;
import java.util.List;
import java.util.Stack;
  
/** 
 * 应用程序Activity管理类：用于Activity管理和应用程序退出 
 * 
 */  
public class MyActivityManager {  
      
    private static Stack<Activity> activityStack;  
    private static MyActivityManager instance;  
      
    private MyActivityManager(){}  
    /** 
     * 单一实例 
     */  
    public static synchronized MyActivityManager getAppManager(){  
        if(instance==null){  
            instance=new MyActivityManager();  
        }  
        return instance;  
    }  
    /** 
     * 添加Activity到堆栈 
     */  
    public void addActivity(Activity activity){  
        if(activityStack==null){  
            activityStack=new Stack<Activity>();  
        }  
        activityStack.add(activity);  
    }  
    /** 
     * 获取当前Activity（堆栈中最后一个压入的） 
     */  
    public Activity currentActivity(){  
        Activity activity=activityStack.lastElement();  
        return activity;  
    }  
    /** 
     * 结束给定的activity之外所有的activity
     */  
    public void finishOthersActivity(Class<?> cls){  
    	List<Activity> delList = new ArrayList<Activity>(); 
    	for (Activity activity : activityStack) {  
    		 if(!activity.getClass().equals(cls) ){  
    			 delList.add(activity);
             }
         }
    	//删除
    	activityStack.removeAll(delList);
    }  
    /** 
     * 结束当前Activity（堆栈中最后一个压入的） 
     */  
    public void finishActivity(){  
        Activity activity=activityStack.lastElement();  
        finishActivity(activity);  
    }  
    /** 
     * 结束指定的Activity 
     */  
    public void finishActivity(Activity activity){  
        if(activity!=null){  
            activityStack.remove(activity);  
            activity.finish();  
            activity=null;  
        }  
    }  
    /** 
     * 结束指定类名的Activity 
     */  
    public void finishActivity(Class<?> cls){  
        for (Activity activity : activityStack) {  
            if(activity.getClass().equals(cls) ){  
                finishActivity(activity);  
            }  
        }  
    }  
    /** 
     * 结束所有Activity 
     */  
    public void finishAllActivity(){  
        for (int i = 0, size = activityStack.size(); i < size; i++){  
            if (null != activityStack.get(i)){  
                activityStack.get(i).finish();  
            }  
        }  
        activityStack.clear();  
    }  
    /** 
     * 退出应用程序 
     */  
    public void AppExit(Context context) {  
        try {  
            finishAllActivity();  
            ActivityManager activityMgr= (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE);  
            activityMgr.restartPackage(context.getPackageName());  
            System.exit(0);  
        } catch (Exception e) { 
        	//需要做异常捕获log
        }  
    }  
}  